table of contents
LOCKF(3) | Manuel du programmeur Linux | LOCKF(3) |
NOM¶
lockf - Poser, examiner ou supprimer un verrou POSIX sur un fichier ouvert
SYNOPSIS¶
#include <unistd.h>
int lockf(int fd, int cmd, off_t len);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
lockf() : _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
DESCRIPTION¶
Cette fonction pose, examine, ou supprime un verrou POSIX sur un fichier ouvert. Le fichier est spécifié par fd, un descripteur ouvert en écriture, l'action par cmd, et la section par les octets aux positions pos..pos+len-1 si len est positive et pos-len..pos-1 si len est négative, où pos est la position actuelle dans le fichier. Si len vaut zéro, la section s'étend de la position courant à l'infini, englobant la fin de fichier et les extensions ultérieures. Dans tous les cas, la section peut s'étendre au delà de la fin du fichier.
Sous Linux, lockf() est une interface de vérrou au dessus de fcntl(2). Beaucoup d'autres systèmes implémentent lockf() de cette façon, cependant POSIX.1-2001 ne spécifie pas la relation de vérrou entre lockf() et fcntl(2). Une application portable ne devrait pas mixer des appels à ces deux interfaces.
Les opérations valides sont les suivantes :
- F_LOCK
- Poser un verrou exclusif sur la section indiquée du fichier. Si (une partie de) la section est déjà verrouillée, l'appel bloque jusqu'à la suppression du verrou précédent. Si la section recouvre un verrou existant (du même processus), les deux sont regroupés. Les verrouillages sont libérés lorsque le processus ferme un descripteur du fichier. Un processus fils n'hérite pas du verrou.
- F_TLOCK
- Comme F_LOCK mais l'appel n'est pas bloquant, il renvoie une erreur si le fichier est déjà verrouillé.
- F_ULOCK
- Déverrouiller la section indiquée du fichier. Ceci peut conduire une section verrouillée à être découpée en deux sections.
- F_TEST
- Vérifier s'il y a un verrou : l'appel renvoie 0 si la section indiquée est libre ou verrouillée par le processus appelant, et -1 avec EAGAIN (EACCES sur d'autres systèmes) dans errno si un autre processus possède le verrou.
VALEUR RENVOYÉE¶
En cas de réussite, zéro est renvoyé, sinon -1 est renvoyé et errno contient le code d'erreur.
ERREURS¶
- EACCES ou EAGAIN
- Le fichier est verrouillé et F_TLOCK ou F_TEST étaient indiqués, ou encore l'opération est impossible car le fichier est projetée dans la mémoire d'un autre processus.
- EBADF
- fd n'est pas un descripteur de fichier ouvert.
- EDEADLK
- L'opération T_LOCK demandée amènerait à un cas de blocage.
- EINVAL
- Une opération invalide a été réclamée sur fd.
- ENOLCK
- La table des verrous est pleine.
CONFORMITɶ
SVr4, POSIX.1-2001.
VOIR AUSSI¶
fcntl(2), flock(2)
Il existe aussi locks.txt et mandatory-locking.txt dans le
répertoire Documentation/filesystems des sources du noyau (sur
d'anciens noyaux, ces fichiers se trouvent dans le répertoire
Documentation/ et mandatory-locking.txt est appelé
mandatory.txt).
COLOPHON¶
Cette page fait partie de la publication 3.23 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://alioth.debian.org/projects/perkamon/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-l10n-fr@lists.alioth.debian.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
25 juillet 2009 | GNU |